Sentence Embedding
自然言語処理において、意味のある意味情報を符号化したベクトルの形で表現する手法。ベクトル埋め込みや単語埋め込みとも日本語では言われる。
Wikipediaによると
BERTは文の最初に特別なCLS(Classification文全体の要約)を追加する手法を使用。CLSトークンの最終隠れ層状態ベクトルは、文に関する情報をエンコードし、文分類タスクなどでfine-tuningできる。 つまり、文全体の情報を入れつつ、単語を理解することができる。
しかし実際には、BERTのCLSトークンを使ったセンテンス埋め込みは、単純な非文脈的単語埋め込みの平均を取るよりも性能が悪いことが多いらしい。 このデータセットには、文のペアが含まれており、それぞれのペアで一方の文が他方の文に対して「含意」、「矛盾」、「中立」の関係にあるかが注釈されているもの。
その上で、シャムニューラルネットワークという2つ以上の同一のサブネットワークを使い、同じ重みと構造を共有し、それぞれの入力から特徴を抽出して比較するアーキテクチャを使用して微調整することで、より優れたセンテンス埋め込み性能を達成した、 また、分布意味論(distributional semantics)に基づくアプローチもある。例えば、Skip-Thoughtといって、隣接する文の予測のためのエンコーダ・デコーダ構造を訓練するものがある。これはSBERTなどの他のアプローチよりも性能が劣る。 さらに単語埋め込みの集約、別の方向性として、Word2vecなどによって返される単語埋め込みを文埋め込みに集約する方法がある。最も簡単なアプローチは、単語ベクトルの平均を計算することで、これは連続単語バッグ(CBOW)と言われる。より複雑な解決策として、単語ベクトル量子化に基づく方法がある。その一つに、局所集約単語埋め込みベクトル(VLAWE)があり、これは下流のテキスト分類タスクでの性能向上を示す。 近年、センテンス埋め込みは、意味検索のためのベクトルインデックスを用いた自然言語で問い合わせ可能な知識ベースへの応用により、関心が高まっています。
例えば、LangChainは文書のインデックス作成にセンテンストランスフォーマーを利用しています。具体的には、文書のチャンク(断片)に対して埋め込みを生成し、(文書チャンク、埋め込み)の組み合わせを保存します。その後、自然言語でのクエリが与えられると、そのクエリの埋め込みが生成されます。そして、クエリ埋め込みと文書チャンク埋め込みとの間でトップk類似度検索アルゴリズムを使用し、質問応答タスクのための文脈情報として最も関連性の高い文書チャンクを取得します。このアプローチは、正式には検索強化生成としても知られています。
BERTScoreほど主流ではありませんが、センテンス埋め込みは、文の類似度評価に一般的に使用されており、大規模言語モデルの生成パラメーターの最適化タスクによく使われます。これは、候補文と参照文のセンテンス埋め込みのコサイン類似度を評価関数として使用し、グリッドサーチアルゴリズムを利用してハイパーパラメーターの最適化を自動化することにより行われます。
センテンス埋め込みをテストする方法の一つとして、構成的知識を含む文(SICK)コーパスにそれらを適用することがあります。これは、含意(SICK-E)と関連性(SICK-R)の両方で行われます。
参考文献14によると、スタンフォード自然言語推論(SNLI)コーパスで訓練されたBiLSTMネットワークを使用した場合、最良の結果が得られます。SICK-Rのピアソン相関係数は0.885で、SICK-Eの結果は86.3です。以前のスコアよりも若干の改善が、参考文献15で提示されています:SICK-R: 0.888、SICK-E: 87.8。これは、双方向ゲートリカレントユニットの連結を使用しています。